#include "Object.h"
#include "ObjectController.h"
#include "Str.h"
#include "Shapes2D/Point2D.h"

Object::Object(){}

Object::~Object(){}
void		Object::__setId(INSTANCE_ID newId){_id=newId;}
INSTANCE_ID	Object::getId(){return _id;}
Object&		Object::setVisibility(bool newVisibility){
    visible=newVisibility;
    return *this;
}
bool		Object::isVisible(){return visible;}
bool		Object::isInvisible(){return !visible;}
bool		Object::preciseCollisionsSet(){return preciseCollisions;}
Object&		Object::setPreciseCollisions(bool precise){preciseCollisions=precise;return *this;}
Object&		Object::setDepth(double newDepth){
    depth=newDepth;
    return *this;
}
double		Object::getDepth(){return depth;}
bool		Object::getKeyState(char key){
    return objectController.getKeyState(key);
}
bool		Object::getMouseState(char key){
    return objectController.getMouseState(key);
}
Point2D&	Object::mouse(){
    return objectController.getMousePosition();
}
bool		Object::totalObjects(char key){
    return objectController.getNumberOfInstances();
}
//Default virtual functions
void		Object::draw(){
    //spr.draw(position,(float)depth);
}
void		Object::drawOrtho(){
    //spr.draw(position,(float)depth);
}
void		Object::create(){}                         //do nothing for the default function
void		Object::step(){}                           //do nothing for the default function
void		Object::destroyed(){}                      //do nothing for the default function
void		Object::collision(Object &obj){}           //do nothing for the default function
void		Object::globalMouse(int button, Point2D &pt){}     //do nothing for the default function
void		Object::globalMouseDown(int button, Point2D &pt){} //do nothing for the default function
void		Object::globalMouseUp(int button, Point2D &pt){}   //do nothing for the default function
void		Object::mouse(int button, Point2D &pt){}     //do nothing for the default function
void		Object::mouseDown(int button, Point2D &pt){} //do nothing for the default function
void		Object::mouseUp(int button, Point2D &pt){}   //do nothing for the default function
void		Object::key(int button){}                  //do nothing for the default function
void		Object::keyDown(int button){}              //do nothing for the default function
void		Object::keyUp(int button){}                //do nothing for the default function
